1. Field of the Invention.
The present invention relates to the field of computer and computer memory systems.
2. Prior Art.
One of the most important characteristics of a computer system is its address space, as this basically determines how large a program can be run. Until now, the address space has generally been thought of as a hardware determined parameter dependent upon the width of one or more hardware data paths. By way of example, if a particular machine has an address bus n bits wide, or is capable of directly handling pointers n bits wide, then the address space of the machine will be 2 .sup.n. This does not necessarily mean that the machine has memory installed of 2.sup.n words, but rather that the machine is capable of addressing 2.sup.n unique address locations, whether in local memory, on disk or elsewhere. By way of a more specific example, the Lambda processor manufactured by LISP Machine Inc. of Los Angeles has been said to have an address space of two to the 25 of 32 bit words, this number being determined by the width of certain hardware data paths, the size of certain mapping memories, etc. Although there have been various attempts to run larger programs than the basic address space of the computer involved, they have usually been of limited success.
One approach to a similar problem is to use some form of one of the virtual memory systems which are common place in current day computer systems. Virtual memory systems evolved in response to a need to run larger programs than allowable with the available amount of physical primary memory, generically referred to as core memory. With a virtual memory system, a large amount of core memory can be simulated by the combination of a smaller amount of core memory plus a large backing store, usually a disk system. The disk need not possess truly random access capability, and typically will have a cost per bit several orders of magnitude less than core memory. Basically, the image to be run is maintained on the disk, with the parts that are actually active, being swapped into core. The amount of core available affects only the number of swaps, and thus the time, necessary to run a given program. The ultimate answer will always be the same as if the entire amount of physical core had existed (ignoring of course any time dependencies, etc.).
A virtual memory system then, decouples the virtual address space from the physical address space. However, virtual addresses are still dealt with directly by hardware, and thus their sizes are limited by the width of certain hardware data paths. In the usual virtual memory system, the data on disk is maintained in exactly the same format as the format in which it is used in core. Thus swapping operations consist merely of transferring data from core to disk and vice versa. Accordingly, the ultimate limit is still a hardware determined parameter and thus, in many cases, undesirably small.